import logging
import re
import sys

from PyQt5.QtGui import QTextCursor, QPalette, QFont, QTextCharFormat, QColor
from PyQt5.QtWidgets import QApplication, QWidget, QTextEdit, QVBoxLayout, QPushButton, QLabel, QHBoxLayout, QFrame
from PyQt5.QtCore import QThread, Qt, QTimer


class LogWindow(QWidget):
    """
    日志类
    """
    def __init__(self):
        super().__init__()
        self.keypoint_info = None
        self.log_text = QTextEdit(self)  # 创建一个文本编辑器用于显示日志
        self.log_text.setReadOnly(True)  # 设置为只读

        self.label1 = QLabel('操作台')
        # self.vertical_separator1 = QFrame()  # 水平分割
        # self.vertical_separator2 = QFrame()  # 水平分割
        # self.Split_v1 = QSplitter(Qt.Vertical)  # 垂直分割
        # self.Split_v2 = QSplitter(Qt.Vertical)  # 垂直分割

        # 创建一个布局
        layout_V = QVBoxLayout(self)
        layout_H = QHBoxLayout(self)

        # layout_H.addWidget(self.clear_button)
        # layout_H.addWidget(self.vertical_separator1)
        layout_H.addWidget(self.label1)
        # layout_H.addWidget(self.vertical_separator2)
        self.label1.setAlignment(Qt.AlignCenter)  # 居中显示
        layout_V.addLayout(layout_H)
        layout_V.addWidget(self.log_text)

        # 初始化样式
        self.style_log()

        # 链接信号
        # self.clear_button.clicked.connect(self.clear_logs)  # 按钮点击事件连接到清除日志的方法

    def style_log(self):
        """
        设置样式
        """
        palette = QPalette()
        gray_color = QColor.fromRgb(50, 50, 50)
        palette.setColor(QPalette.Base, gray_color)  # 设置背景颜色为黑色
        self.log_text.setPalette(palette)
        font = self.log_text.font()  # 设置字体样式和颜色
        font.setFamily("Courier")
        font.setPointSize(10)
        self.log_text.setFont(font)
        self.log_text.setStyleSheet("QTextEdit { color: white; }")  # 设置字体颜色为白色

    def on_update_End(self, info):
        """
        更新操作
        :param info: 接收的信号
        """
        if info:
            self.keypoint_info = str(info)
            self.log_text.append(info)  # 添加到文本编辑器
            self.log_text.moveCursor(QTextCursor.End)  # 滚动到底部
            self.log_text.ensureCursorVisible()

    def clear_logs(self):
        """清空日志"""
        self.log_text.clear()


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = LogWindow()  # 创建窗口实例
    window.show()
    if app.exec_():
        window.stop_log()
        sys.exit(app.exec_())  # 运行应用程序